データベースの負荷とは?RDS Performance Insights の使い方動画のご紹介と負荷対策のヒント
コーヒーが好きな emi です。
RDS Performance Insights は RDS の性能が出ない場合やエラーの原因を調査する際に大活躍するイチオシのサービスです。
データベースの負荷が問題になるケースは多くお問い合わせも多くいただきますが、いざ原因調査の際に Performance Insights をすぐに使いこなせないと困ります。
本記事では RDS Performance Insights の見方が非常に分かりやすく案内されているおすすめの動画のご紹介と、データベースの負荷が高い時に参考になるリンクをまとめました。
「そもそもデータベースの負荷とは?」というところも、動画を参考に要点をまとめております。
動画
AWS Summit 2019 のセッション動画です。
資料
要点
データベースのセッションのステータスは「Active(アクティブ)」と「Idle(アイドル)」の二つあります。アクティブなセッションには更に CPU を使っているものと、CPU を使わずに他の処理が終わるのを待たされているものがあります。
- Active(アクティブ)
- CPU 使用中
- 他の処理を待機中(待たされている)
- ディスク IO を待ってるとか
- Idle(アイドル)
CPU を掴んでいるのに他の処理を待たされていて(待機)実質 CPU が使われていない、という状態は非効率で勿体ない 、というのが感覚的にお分かりいただけるかと思います。
RDS の負荷を見る際に大事な KPI として、DBLoad
(データベースロード、DB ロード)というメトリクスがあります。アクティブなセッションの数を時系列でみている もので、1 秒間の平均アクティブセッション(Average Active Sessions(AAS)) と DBload はほぼイコールと思っていただいてよいです。
▼ 資料 P15 より引用
Performance Insights は DB セッションの状態を 1 秒に 1 回サンプリングし時系列に並べて状況を可視化してくれます。
パフォーマンスの問題の有無は、AAS(≒ DBLoad)がDB インスタンスの最大 CPU サイズ(8vCPU とか、16vCPU とか)を超えているかどうかで判断できます。
▼資料 P20 より引用
Performance Insights が見られる検証環境が私の手元にないので資料からの引用になってしまうのですが、以下の赤枠部分のように、どの SQL 文でどれくらい待機中セッションがあるのか というのが視覚的に分かります。
具体的にどの SQL 文で待機が発生して問題となっているのか分かるのが素晴らしいです。
▼資料 P23 より引用
Performance Insights が対応しているインスタンスサイズは以下のドキュメントを確認ください。
Performance Insights の料金
Performance Insights はログ保持期間 7 日間まで無料という太っ腹なサービスですが、無料利用枠で 7 日以上経つとログが無くなってしまうため、エラーの原因調査やパフォーマンス改善中は心もとなく感じます。
運用開始後は 7 日間の無料枠で有効化しておき、たまに確認して、性能に余裕があるようだったらインスタンスのスペックを下げてコスト削減に役立てるのがおすすめです。
運用開始後性能問題が頻発するようであれば保持期間を伸ばし、原因調査やパフォーマンス改善に役立てると良いでしょう。
AWS 公式ドキュメントと公式ブログ
Amazon RDS での Performance Insights を使用したDB 負荷のモニタリング - Amazon Relational Database Service
初めてのPerformance Insights入門 | Amazon Web Services ブログ
初めてのPerformance Insights入門 – その2 | Amazon Web Services ブログ
初めてのPerformance Insights入門 – その3 | Amazon Web Services ブログ
データベース以外の部分が原因の場合
「データベースの負荷が高くて困っている」というお問い合わせをいただく際、実際に問題なのはデータベースではない場合も多くございます。
よくあるのは データベースの前段にある EC2 インスタンスなどコンピュートサービスの負荷高騰や、Apache や NGINX の設定 が問題になっている場合です。
Apache や NGINX の設定、ELB のエラーに関しては以下のリンク先が参考になります。
Apache または NGINX を ELB のバックエンドサーバーとして使用する | AWS re:Post
Application Load Balancer のトラブルシューティング - Elastic Load Balancing
[障害対応] ALB で502エラーが発生!!その時あなたはどうする!? | DevelopersIO
おわりに
質問やご要望については画面下部のお問い合わせ「DevelopersIO について」からご連絡ください。記事に関してお問い合わせいただけます。
参考